Applications typically have complex logic that govern their behavior, and the complexity manifests itself in many different ways. For instance, the complexity may show up as complicated and numerous navigation paths in the application user interface, as significant interactions between data entered on different application screens, or as complex rules related to access control, business calculations, etc. Functional specification of applications is often given in the form of rules, which for example can describe the logic, access control, or navigational properties of an application's graphical user interface (GUI). Therefore, these rules can be considered as a natural starting point for the design of functional tests.
The aim of functional testing of applications is to exercise meaningful or interesting application behavior. Although testing can be guided to cover navigation paths, exhaustive coverage is impractical in most cases, as applications can have a prohibitively large numbers of paths. Moreover, such testing can be wasteful because not all paths exercise interesting application behavior. Instead, it can be more fruitful for functional testing of enterprise applications to be directed toward covering use cases, enterprise rules, or selected combinations of values for different application parameters.
For example, in an online shopping application, different parameters such as invoice amount and payment method can interact to determine some enterprise calculation such as the offer of a discount or a gift coupon. Thus, testing can be directed to covering different combinations of values for these parameters (or predicates).
Creating a test that covers a rule presents challenges, however. Such a task requires identification of a potentially complex sequence of actions (on the application user interface) along with suitable data values. In existing approaches, this is performed manually, and therefore, is both expensive in human time and subject to errors of omission that can lead to inadequate testing. Hence, there is a need for an automated methodology for test generation from enterprise rules and predicates.